import { request} from "../../request/index"
import {getSetting,chooseAddress,openSetting,showModal,showToast} from "../../utils/asyncWx.js"
// pages/cart/index.js
Page({
  data: {
    address:{},
    cart:[],
    allCheckd:false,
    totalNum:0,
    totalPrice:0
  },
  onShow(){
    // 1获取缓存中的收获地址
    const address=wx.getStorageSync("address");
    // 获取缓存中的购物车数据
    const cart=wx.getStorageSync("cart")||[];
    this.setData({address})
    this.setCart(cart);
  },
    // 点击  收货地址
  async  handleChooseAddress(){
    try{
     //1 获取权限状态
     const res1=await getSetting();
     const scopeAddress=res1.authSetting["scope.address"];
     // 2判断权限状态
     if(scopeAddress===false){
      // 3.用户 以前拒绝过授予权限 先诱导用户打开授权页面
      await openSetting();
     }
       // 3调用获取收货地址的api
     let address=await chooseAddress();
        address.all=address.provinceName+address.cityName+address.countyName+address.detailInfo
    //    存入到缓存中
       wx.setStorageSync('address', address)
    }catch(error){
        console.log(error)
    }
},
// 商品的选中
handeItemChange(e){
  //1 获取被修改的商品的id
  console.log(e)
  const goods_id=e.currentTarget.dataset.id;
  //2 获取购物车数组
  let {cart}=this.data;
  //3 找到被修改的商品对象
  let index=cart.findIndex(v=>v.goods_id===goods_id);
  // 4选中状态取反
  cart[index].checked=!cart[index].checked;
   this.setCart(cart)
 },
// 设置购物车状态同时 重新计算 底部工具懒得数据 全选 总价格 购买的数量
 setCart(cart){
  let allCheckd=true
    // 总价格  总数量
    let totalNum=0;
    let totalPrice=0;
    cart.forEach(v=>{
      if(v.checked){
        totalPrice+=v.num*v.goods_price;
        totalNum+=v.num
      }else{
        allCheckd=false
      }
    })
    // 判断数组是否为空
    allCheckd=cart.length!=0?allCheckd:false;
    this.setData({
      cart, totalNum,totalPrice,allCheckd
    });
   // 5 6 把购物车数据重新设置回data中和缓存中
  wx.setStorageSync('cart',cart);
 },
//  商品全选功能
handleItemAllCheck(){
  //1 获取data中的数据
  let {cart,allCheckd}=this.data;
  // 2修改值
  allCheckd=!allCheckd;
  // 3循环修改cart数组 中的商品选中状态
  cart.forEach(v=>v.checked=allCheckd);
  // 4把修改后的值 填充回data或者缓存中
  this.setCart(cart);
},
// 商品数量的编辑功能
 async handleItemNumEdit(e){
  // 1获取传递过来的参数
  const {operation,id}=e.currentTarget.dataset;
  console.log(operation,id)
  // 获取购物车数组
  let {cart}=this.data;
  // 找到需要修改的商品的索引
  const index=cart.findIndex(v=>v.goods_id===id);
  // 判断是否要执行删除
  if(cart[index].num===1&&operation===-1){
    //4.1弹窗提示
 const res=await showModal({content:"您是否要删除"})
 if (res.confirm) {
  cart.splice(index,1);
  this.setCart(cart);
}
  }else{
    // 4进行修改数量
    cart[index].num+=operation
    //5设置回缓存中的data中.
    this.setCart(cart)
  }
},
  // 点击 结算
  async  handlePay(){
    // 判断收货地址
    const {address,totalNum}=this.data;
    if(!address.userName){
  await showToast({title:"您还没有选择收货地址"})
      return;
    }
    // 判断用户有没有选购商品
    if(totalNum===0){
      await showToast({title:"您还没有选购商品"})
        return;
    }
  //跳转到 支付页面
  wx.navigateTo({
    url: '/pages/pay/index',
  })
  }
})